import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEAction } from '../action/ipsdeaction';
import { IPSDEDataSet } from '../ds/ipsdedata-set';
import { IPSDEOPPriv } from '../priv/ipsdeoppriv';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEPrint
 */
export interface IPSDEPrint extends IPSDataEntityObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 数据访问标识
   * @type {string}
   */
  dataAccessAction: string;

  /**
   * 明细数据实体对象
   *
   * @type {IPSDataEntity}
   */
  getDetailPSDE(): IPSDataEntity | null;

  /**
   * 明细数据实体对象
   *
   * @type {IPSDataEntity}
   */
  get detailPSDE(): IPSDataEntity | null;

  /**
   * 明细数据实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getDetailPSDEMust(): IPSDataEntity;

  /**
   * 明细数据实体数据集对象
   *
   * @type {IPSDEDataSet}
   */
  getDetailPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 明细数据实体数据集对象
   *
   * @type {IPSDEDataSet}
   */
  get detailPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 明细数据实体数据集对象（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getDetailPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 获取数据实体行为
   *
   * @type {IPSDEAction}
   */
  getGetDataPSDEAction(): IPSDEAction | null;

  /**
   * 获取数据实体行为
   *
   * @type {IPSDEAction}
   */
  get getDataPSDEAction(): IPSDEAction | null;

  /**
   * 获取数据实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getGetDataPSDEActionMust(): IPSDEAction;

  /**
   * 获取数据实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  getGetDataPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 获取数据实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  get getDataPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 获取数据实体操作标识（必须存在）
   *
   * @type {IPSDEOPPriv}
   */
  getGetDataPSDEOPPrivMust(): IPSDEOPPriv;

  /**
   * 性能优化预警时长（ms）
   * @type {number}
   * @default -1
   */
  pOTime: number;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 报表路径
   * @type {string}
   */
  reportFile: string;

  /**
   * 报表模型
   * @type {string}
   */
  reportModel: string;

  /**
   * 报表类型
   * @type {string}
   */
  reportType: string;

  /**
   * 实体默认打印
   * @type {boolean}
   * @default false
   */
  defaultMode: boolean;

  /**
   * 启用列权限
   * @type {boolean}
   * @default false
   */
  enableColPriv: boolean;

  /**
   * 启用打印日志
   * @type {boolean}
   * @default false
   */
  enableLog: boolean;

  /**
   * 启用多页打印
   * @type {boolean}
   * @default false
   */
  enableMulitPrint: boolean;
}
